import axios from 'axios'
import { message } from 'antd'
import { setItem } from './common'
import store from './../store'
import * as types from '../store/actionTypes'
const isDev = process.env.NODE_ENV === 'development'
//封装拦截器
const request = axios.create({
    //前者 开发时期本地的地址 后面上线后请求的地址
    baseURL: isDev ? '' : 'http://www.liyao.com/api'
})

//设置拦截器
//请求拦截器---- 所有的数据请求 都需要经过这个地方
request.interceptors.request.use(function (config) {
    config.headers.common.token = store.getState().getIn(['user', 'token'])
    return config
}, function (error) {
    return Promise.reject(error)
})

//添加相应拦截器
request.interceptors.response.use(function (response) {
    if (response.data.code === '10119') {
        console.log('token验证失败')
        //修改状态管理器的值
        store.dispatch({
            type: types.CHANGE_LOGIN_STATE,
            payload: false
        })
        //修改本地存储的值
        setItem('loginState', false)
        message.warning('token验证失败,重新登录')
        //跳转至页面
        setTimeout(() => {
            window.location.href = '/login'
        }, 1000)
    }
    return response
}, function (error) {
    return Promise.reject(error)
})

export default request
